/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package notificacoes;

import Log.Escrita;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.net.MalformedURLException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.commons.mail.EmailException;

/**
 *
 * @author Fernando
 */
public class VerificarSms implements Runnable {

    private boolean stop = false, proxy = false;

    public boolean isStop() {
        return stop;
    }

    public boolean isProxy() {
        return proxy;
    }

    public void setProxy(boolean proxy) {
        this.proxy = proxy;
    }

    public void setStop(boolean stop) {
        this.stop = stop;
    }

    public VerificarSms() throws SQLException, IOException {
        Thread t = new Thread(this, "VerificarSms");
        t.start();
    }

    public void run() {
        Notificacao n = new Notificacao();
        List<Destinatario> lista = null;
        List<Destinatario> listaDEL;

        //*********arquivo
        EnviarSms sms;
        Escrita escrita = null;
        try {
            escrita = new Escrita("3G-NOTIFIER-LOG-SMS-EMAIL");
            try {
                escrita.escreverString("SMS");
                escrita.escreverString("Docente");
                escrita.escreverString("Discente");
                escrita.escreverString("ddd");
                escrita.escreverString("Numero");
                escrita.escreverString("Mesagem");
                escrita.escreverString("Email");
                escrita.pularLinha();
            } catch (IOException ex) {
                Logger.getLogger(VerificarSms.class.getName()).log(Level.SEVERE, null, ex);
            }

        } catch (FileNotFoundException ex) {
            Logger.getLogger(VerificarSms.class.getName()).log(Level.SEVERE, null, ex);
        }
        //*********arquivo

        while (!stop) {
            sms = new EnviarSms();
            listaDEL = new ArrayList<Destinatario>();
            try {
                lista = n.verificarMensagens();
            } catch (SQLException ex) {
                Logger.getLogger(VerificarSms.class.getName()).log(Level.SEVERE, null, ex);
            }
            int i = 0;
            //Envio de Email !!!! setar proxy!!!!!!!!!
            if (!proxy) {
                try {
                    new EnviaEmail(lista);
                } catch (EmailException ex) {
                    Logger.getLogger(VerificarSms.class.getName()).log(Level.SEVERE, null, ex);
                } catch (MalformedURLException ex) {
                    Logger.getLogger(VerificarSms.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            
            while (i < lista.size() && !lista.isEmpty()) {
                //lembre-se de setar o proxy na classe EnviarSms
                sms.setProxy(proxy); //retirar proxy
                sms.enviar(lista.get(i));
                try {
                    escrita.escreverString(lista.get(i).getId() + "");
                    escrita.escreverString(lista.get(i).getDocente());
                    escrita.escreverString(lista.get(i).getDiscente());
                    escrita.escreverString(lista.get(i).getDdd_cel());
                    escrita.escreverString(lista.get(i).getNum_cel());
                    escrita.escreverString(lista.get(i).getMensagem());
                    escrita.escreverString(lista.get(i).getEmail());
                    escrita.pularLinha();
                } catch (IOException ex) {
                    Logger.getLogger(VerificarSms.class.getName()).log(Level.SEVERE, null, ex);
                }
                listaDEL.add((lista.get(i)));
                i++;
            }
            n.delete(listaDEL);
            try {
                Thread.sleep(30000);
            } catch (InterruptedException ex) {
                try {
                    escrita.fecharArquivo();
                } catch (IOException ex1) {
                    Logger.getLogger(VerificarSms.class.getName()).log(Level.SEVERE, null, ex1);
                }
            }
        }
    }
}
